package com.pandora.credit.service;

import com.pandora.credit.dto.request.AnnouncementRequest;
import com.pandora.credit.dto.request.MessageStatusRequest;
import com.pandora.credit.dto.response.MessageResponse;
import com.pandora.credit.dto.response.MessageStatusGetResponse;
import com.pandora.credit.dto.response.MessageStatusResponse;
import com.pandora.credit.entity.Message;

import java.util.List;

/**
 * @author developer
 */
public interface MessageService {

    /**
     * save
     * @param message message
     */
    void save(Message message);

    /**
     * update
     * @param message message
     */
    void update(Message message);

    /**
     * getByCusIdValidLtId
     * @param cusId cusId
     * @param valid valid
     * @param id id
     * @return MessageList
     */
    List<Message> getByCusIdValidLtId(long cusId, int valid, long id);

    /**
     * getByCusIdValidRead
     * @param cusId cusId
     * @param valid valid
     * @param readStatus readStatus
     * @return MessageList
     */
    List<Message> getByCusIdValidRead(long cusId, int valid, int readStatus);

    /**
     * doGetMessage
     * @param authorizationToken authorizationToken
     * @param req req
     * @return LoanResponseNextStr
     */
    MessageResponse doGetMessage(String authorizationToken, AnnouncementRequest req);

    /**
     * doUpdateMessageStatus
     * @param authorizationToken authorizationToken
     * @param req req
     * @return MessageStatusResponse
     */
    MessageStatusResponse doUpdateMessageStatus(String authorizationToken, MessageStatusRequest req);

    /**
     * doGetMessageStatus
     * @param authorizationToken authorizationToken
     * @return MessageStatusGetResponse
     */
    MessageStatusGetResponse doGetMessageStatus(String authorizationToken);
}
